package com.bw.dao;

import com.bw.pojo.Book;
import com.bw.util.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/***************************
 FileAction: dao   是数据访问层的 缩写

    这个类是用来封装对 图书表增删改查的

 CreateTime:2022-04-22 10:57
 Author:Aaking-aline
 ****************************/
public class BookDao {

    public void insertBook(Book book) throws SQLException {
        // 第一步  写 SQL语句
        String sql = "insert into book values(null,?,?,?,?,?)";   // ? 占位符
        // 第二步  获取连接对象
        Connection connection = JDBC.getConnection();
        // 第三步  通过连接对象获取执行对象
        PreparedStatement ps = connection.prepareStatement(sql);
        // 第四步  通过执行对象 设置参数
        ps.setObject(1,book.getBook_name());
        ps.setObject(2,book.getPrice());
        ps.setObject(3,book.getBook_versions());
        ps.setObject(4,book.getMake_address());
        ps.setObject(5,book.getBook_kind());
        // 第五步  通过执行对象 执行SQL指令
        ps.executeUpdate();
    }


    public void deleteBook(String id) throws SQLException {
        // 第一步  写 SQL语句
        String sql = "delete from book where id = ?";   // ? 占位符\
        // 第二步  获取连接对象
        Connection connection = JDBC.getConnection();
        // 第三步  通过连接对象获取执行对象
        PreparedStatement ps = connection.prepareStatement(sql);
        // 第四步  通过执行对象 设置参数
        ps.setObject(1,id);
        // 第五步  通过执行对象 执行SQL指令
        ps.executeUpdate();
    }

    public void updateBook(Book book) throws SQLException {

    }

    public List<Book> selectAllBook() throws SQLException {
        // 第一步  写 SQL语句
        String sql = "select * from book";
        // 第二步  获取连接对象
        Connection connection = JDBC.getConnection();
        // 第三步  通过连接对象获取执行对象
        PreparedStatement ps = connection.prepareStatement(sql);
        // 第四步  通过执行对象 设置参数  由于 sql语句没有 问号  所以第四步省略  不用设置参数

        // 第五步  通过执行对象 执行SQL指令
        ResultSet rs = ps.executeQuery();

        // 下面是 为了把结果集对象 转换成 java集合
        List<Book> list = new ArrayList<>();

        while(rs.next()){
            Book book = new Book(rs.getInt(1),
                    rs.getString(2),
                    rs.getDouble(3),
                    rs.getString(4),
                    rs.getString(5),
                    rs.getString(6));
            list.add(book);
        }

        return list;
    }


}
